#============================================================
#	Grid
#============================================================
# @datetime: 2022-4-20 22:22:59
#============================================================
class_name HUD_ItemGrid
extends PanelContainer


signal selected(item_data)


export var item_node : PackedScene

var _node_map : Dictionary = {}
var cell_size : Vector2 = Vector2(4, 4)


onready var _margin_container := get_node("MarginContainer") as MarginContainer
onready var _grid := get_node("MarginContainer/ScrollContainer/Grid") as GridContainer

onready var temp_item_node = item_node.instance() as Control


#============================================================
#   自定义
#============================================================
##  添加物品
## @data  
func add_item(data: Dictionary):
#	Logger.info(self, ['添加物品：', data])
	var node = item_node.instance()
	node.set_data(data)
	node.connect("selected", self, "_on_Item_selected")
	_grid.add_child(node)
	# 最好不要直接以 data 作为 key
	# 因为原本的物品字典引用有可能会发生改变
	_node_map[data['id']] = node


##  移除物品
## @data  
func remove_item(data: Dictionary):
	var node : Node = _node_map.get(data['id'])
	if node:
		node.queue_free()
		_node_map.erase(node)


#============================================================
#   内置
#============================================================
func _ready():
	var _grid_auto_columns = get_node("MarginContainer/ScrollContainer/Grid/GridAutoColumns")
	_grid_auto_columns.cell_size = temp_item_node.rect_size / _grid.get_viewport_transform().get_scale()


#============================================================
#   连接信号
#============================================================
func _on_Item_selected(item_data: Dictionary):
#	Logger.info(self, ['选中物品：', item_data])
	emit_signal("selected", item_data)


func _on_GridAutoColumns_reset_columns(count: int):
	if _grid.columns != count:
		# 剩余空间居中
		var width : float = cell_size.x * count
		var remaining : float = _grid.rect_size.x - width
		_margin_container.set("custom_constants/margin_left", remaining/2)

